package VacationTest.PlaneFight.src;

import java.awt.event.*;

public class Player extends KeyAdapter{
    //传入 frame 对象  也就是 整个窗体中的所有属性值  使用 对象名.方法 进行调用
    GameFrame frame;
    public Player(GameFrame frame){
        this.frame = frame;
    }
    /**
     * 定义一个玩家，操作键盘的上下左右。以及 发射子弹  空格
     * 38 40 37 39  对应 上下左右
     * 重写 keyPressed 和 keyReleased 方法  并使用监听器  判断玩家按哪个键
     */
    public void keyPressed(KeyEvent e){
        int keycode = e.getKeyCode();
        //System.out.println(keycode);//利用该语句 可以 知道 键盘上的按键 值是多少。
        switch(keycode){
            case 38: frame.heroplane.setDirection("up", true);break;
            case 87: frame.heroplane.setDirection("up" , true);break;
            case 40: frame.heroplane.setDirection("down",true);break;
            case 83: frame.heroplane.setDirection("down",true);break;
            case 37: frame.heroplane.setDirection("left",true);break;
            case 65: frame.heroplane.setDirection("left",true);break;
            case 39:frame.heroplane.setDirection("right",true);break;
            case 68:frame.heroplane.setDirection("right",true);break;
            case 32:addBullet();break;
        }
    }
    public void keyReleased(KeyEvent e){
        int keycode = e.getKeyCode();
        switch(keycode){
            case 38: frame.heroplane.setDirection("up", false);break;
            case 87: frame.heroplane.setDirection("up" , false);break;
            case 40: frame.heroplane.setDirection("down",false);break;
            case 83: frame.heroplane.setDirection("down",false);break;
            case 37: frame.heroplane.setDirection("left",false);break;
            case 65: frame.heroplane.setDirection("left",false);break;
            case 39:frame.heroplane.setDirection("right",false);break;
            case 68:frame.heroplane.setDirection("right",false);break;
        }
    }
    // 发射子弹方法 在 键值为  32   时 触发
    public void addBullet(){
        frame.bullets.add(new bullet(frame.heroplane.x +15, frame.heroplane.y-20));
    }
}


